package l1j.opqlo.Server.etcitem.卷軸;

import l1j.server.server.datatables.ItemTable;
import l1j.server.server.datatables.SkillsTable;
import l1j.server.server.model.L1Inventory;
import l1j.server.server.model.Instance.L1ItemInstance;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.serverpackets.S_ServerMessage;
import l1j.server.server.templates.L1Skills;

public class BlankMagicScroll {

	/** 空的魔法卷軸 LV1~LV5 */

	/*
	 * } else if (itemId == 40090 || itemId == 40091 || itemId == 40092 ||
	 * itemId == 40093 || itemId == 40094) { // ブランク スクロール(Lv1)～ブランク //
	 * スクロール(Lv5)
	 */

	public static void begin(final int[] data, final L1PcInstance pc,
			final L1ItemInstance l1iteminstance) {

		final int itemId = l1iteminstance.getItemId();
		final int blanksc_skillid = data[0];

		if (pc.isWizard()) { // 法師才可使用
			if (itemId == 40090 && blanksc_skillid <= 7 || // ブランク
					// スクロール(Lv1)でレベル1以下の魔法
					itemId == 40091 && blanksc_skillid <= 15 || // ブランク
					// スクロール(Lv2)でレベル2以下の魔法
					itemId == 40092 && blanksc_skillid <= 22 || // ブランク
					// スクロール(Lv3)でレベル3以下の魔法
					itemId == 40093 && blanksc_skillid <= 31 || // ブランク
					// スクロール(Lv4)でレベル4以下の魔法
					itemId == 40094 && blanksc_skillid <= 39) { // ブランク
				// スクロール(Lv5)でレベル5以下の魔法
				final L1ItemInstance spellsc = ItemTable.getInstance()
						.createItem(40859 + blanksc_skillid);
				if (spellsc != null) {

					if (pc.getInventory().checkAddItem(spellsc, 1) == L1Inventory.OK) {

						final L1Skills l1skills = SkillsTable.getInstance()
								.getTemplate(blanksc_skillid + 1); // blanksc_skillidは0始まり

						if (pc.getCurrentHp() + 1 < l1skills.getHpConsume() + 1) {

							pc.sendPackets(new S_ServerMessage(279)); // \f1HPが不足していて魔法を使うことができません。
							return;
						}
						if (pc.getCurrentMp() < l1skills.getMpConsume()) {
							pc.sendPackets(new S_ServerMessage(278)); // \f1MPが不足していて魔法を使うことができません。
							return;
						}
						if (l1skills.getItemConsumeId() != 0) { // 材料が必要
							if (!pc.getInventory().checkItem(
									l1skills.getItemConsumeId(),
									l1skills.getItemConsumeCount())) { // 必要材料をチェック
								pc.sendPackets(new S_ServerMessage(299)); // \f1魔法を詠唱するための材料が足りません。
								return;
							}
						}
						pc.setCurrentHp(pc.getCurrentHp()
								- l1skills.getHpConsume());
						pc.setCurrentMp(pc.getCurrentMp()
								- l1skills.getMpConsume());

						int lawful = pc.getLawful() + l1skills.getLawful();
						lawful = Math.min(lawful, 32767);
						lawful = Math.max(lawful, -32767);

						pc.setLawful(lawful);
						if (l1skills.getItemConsumeId() != 0) { // 材料が必要
							pc.getInventory().consumeItem(
									l1skills.getItemConsumeId(),
									l1skills.getItemConsumeCount());
						}
						pc.getInventory().removeItem(l1iteminstance, 1);
						pc.getInventory().storeItem(spellsc);
					}
				}
			} else {
				pc.sendPackets(new S_ServerMessage(591)); // \f1スクロールがそんな強い魔法を記錄するにはあまりに弱いです。
			}
		} else {
			pc.sendPackets(new S_ServerMessage(264)); // \f1あなたのクラスではこのアイテムは使用できません。
		}
	}
}
